package cn.itcast.lesson03;

import java.lang.reflect.Field;

import org.junit.Test;

/**
 * 反射中： java.lang.reflect.Field的用法
 */
public class FieldTest {
	
	
	/**
	 * 得到某个属性的值 public 
	 */
	@Test
	public void getField() throws Exception{
		PointEntity entity = new PointEntity(3,5);
		
		//yField不是对象上的变量，而是类上的变量  
		//getField得到public的属性
		Field yField =entity.getClass().getField("y");
		
		//打印出y的值  在哪个对象上去取值
	    Object y = yField.get(entity);
	    System.out.println(y);
		
	    
	    //getDeclaredField得到private的属性 只要是声明过的 管你可见还是不可见
	    Field xField =entity.getClass().getDeclaredField("x");
	    
	    //setAccessible 用来设置可以访问类的私有属性  暴力反射
	    xField.setAccessible(true);
	    Object x = xField.get(entity);
	    System.out.println(x);
	}

}
